Se trata de buscar un elemento cierto en un vector de Booleanos y devolver si se ha encontrado o no:
bool algun_cierto(const vector<bool>& v) { for (int i = 0; i < v.size(); i++) { if (v[i]) return true; } return false; }
La función recorre el vector en busca de un valor cierto. Si lo encuentra entrará en el if y immediatamente devolverá true (basta con ver un valor cierto para poder contestar a la pregunta). Si el bucle recorre todas las casillas y no se ve ningún cierto se saldrá del for y se devolverá false.
Para iterar el vector de Booleanos, ya que éste es const y no se puede modificar, se necesita un iterador especial, un const_iterator, que promete que no modificará el vector (si no se respeta esto, se produce un error de compilación):
bool algun_cierto2(const vector<bool>& v) { vector<bool>::const_iterator it = v.begin(); for (it = v.begin(); it != v.end(); it++) { if (*it) return true; } return false; }
Es la misma implementación que la anterior traducida usando iteradores.
Haz una función todos_ciertos que recibe un vector de Booleanos y que devuelve true si en el vector todas las casillas estan a true.
Haz una función algun con la cabecera:
bool algun(bool b, const vector<bool>& v);
que devuelve cierto si alguna casilla del vector v tiene el valor b.
Haz una función todos que reciba un valor Booleano b y un vector y que devuelva cierto si todas las casillas del vector tienen el valor b.
En preparación